import { Local } from '@/utils/storage';
import router from '.';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import { RouteLocationNormalized } from 'vue-router';
import { commonEnums } from '@/enums';

const guard = () => {
  router.beforeEach((to, from) => {
    // 进度环显示隐藏
    NProgress.configure({ showSpinner: false });
    NProgress.start();
    if (isValidate(to) === false) return { name: 'login' };
  });

  router.afterEach(() => {
    // 关闭进度条
    NProgress.done();
  });
};

const isValidate = (to: RouteLocationNormalized): boolean => {
  // 如果该页面没有设置需要验证，那么谁都可以访问
  // 如果设置了需要验证，那么必须具有 token，如果没 token 就跳去登录
  return Boolean(!to.meta.isValidate || (to.meta.isValidate && Local.getItem(commonEnums.TOKEN)));
};

export default guard;
